
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>当有一个服务eureka联系不上，另一个又要访问这个服务怎么办 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>当有一个服务eureka联系不上，另一个又要访问这个服务怎么办 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">当Eureka Client无法连接到Eureka Server时，它是如何继续提供服务发现功能的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Eureka Client内部实现了缓存机制。它会定期从Eureka Server拉取注册表数据并存储在本地。当无法与Eureka Server通信时，Eureka Client会使用本地缓存中的服务实例信息来继续提供服务发现功能。</div>
          </div>
          <div class="card-source">来源: 1. Eureka Client 的缓存机制</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">在微服务调用中，服务降级（Fallback）机制的作用是什么？可以借助哪些工具实现？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">服务降级机制用于应对目标服务不可达的情况。当服务不可用时，它会返回一个预定义的降级响应，从而保证系统仍能提供部分功能或用户友好的消息，提高系统的容错能力。可以结合Hystrix或Resilience4j等断路器机制来实现。</div>
          </div>
          <div class="card-source">来源: 3. 服务降级（Fallback）机制</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">如何配置Eureka以避免其服务注册中心本身成为系统的单点故障？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">可以通过配置Eureka的高可用模式来避免单点故障。这通常意味着在生产环境中部署多个Eureka Server节点，并将它们配置成集群模式。这样，即使一个节点失效，其他节点仍然可以继续提供服务注册与发现的功能。</div>
          </div>
          <div class="card-source">来源: 4. Eureka 的高可用配置</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">在什么情况下适合使用异步调用或消息队列？这种方式有哪些优点？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当服务之间的调用允许一定延迟时，适合使用异步调用或消息队列。其主要优点是解耦服务之间的直接依赖，提高系统的弹性和减少服务不可用时的直接影响。即使目标服务暂时不可用，请求也不会立即失败。</div>
          </div>
          <div class="card-source">来源: 5. 异步调用和消息队列</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">像Ribbon或Spring Cloud LoadBalancer这类工具有什么作用？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">这类工具用于在服务发现时进行动态路由和负载均衡。它们能够根据服务的健康状态和负载情况，动态地选择一个合适的服务实例进行调用，从而自动选择可用的服务实例，提高系统的稳定性和性能。</div>
          </div>
          <div class="card-source">来源: 6. 动态路由和负载均衡</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">当服务调用暂时性失败时，重试机制是如何帮助提高系统稳定性的？并举例说明实现工具。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">重试机制通过在服务调用失败时自动进行多次重试，来处理暂时性的连接问题。调用方可以在多个时间点尝试重新连接服务。这种策略可以通过设置重试次数和间隔来控制。例如，可以使用Spring Retry或Resilience4j的Retry模块来实现。</div>
          </div>
          <div class="card-source">来源: 2. 重试机制</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
